package core;

import crawler.AnnouncementCrawlerThread;
import crawler.IAnnouncementCrawler;
import crawler.StatisticsFileWriter;
import crawler.TrovaCaseAdapter;
import crawler.torunski.TorunskiCrawlerFactory;

public class CrawlerMain {


	public static void main(String[] args) {
		if(args.length>=1 && args[0].equals("help")){
			printInstructions();
			return;
		}
		if(args.length!=3){
			printInstructions();
			return;
		}		
		
		String path = args[0];
		String model = args[1];
		int value = Integer.valueOf(args[2]);
		StatisticsFileWriter statisticsWriter = StatisticsFileWriter.getInstance();
		statisticsWriter.setPath(path);
		IAnnouncementCrawler crawlerTrovaCase = new TrovaCaseAdapter(path);
		IAnnouncementCrawler crawlerBachecaCase = TorunskiCrawlerFactory.bachecacase(value,path,model);
		IAnnouncementCrawler crawlerImmobiliareIt = TorunskiCrawlerFactory.immobiliareItCrawler(value,path,model);
		AnnouncementCrawlerThread thread1 = new AnnouncementCrawlerThread(crawlerTrovaCase);
		AnnouncementCrawlerThread thread2 = new AnnouncementCrawlerThread(crawlerBachecaCase);
		AnnouncementCrawlerThread thread3 = new AnnouncementCrawlerThread(crawlerImmobiliareIt);
		
		thread1.start();
		thread2.start();
		thread3.start();
		}

	private static void printInstructions() {
		System.out.println("Bisogna passare 3 (TRE!!) argomenti, che sono (in ordine!):");
		System.out.println("1) Il path dove si vogliono mettere i risultati");
		System.out.println("2) La parola \'it\' (senza apici) se si vuole definire un numero massimo di link da visitare per ogni dominio.");
		System.out.println("La parola \'dep\' (senza apici) se si vuole definire la profondita' massima di visita per ogni dominio.");
		System.out.println("3) Un valore numerico che si riferisce o al numero massimo di link, o alla profondita' massima (vedere punto precedente).");
		System.out.println();
		System.out.println("ATTENZIONE! Il crawler di trova-casa.net e' di tipo bruteforce, per cui non risente in alcun modo dei parametri 2) e 3)");
		System.out.println();
		System.out.println("ESEMPIO: java -jar crawler.jar \"crawl_data\\\" dep 5");
		System.out.println("Assicurarsi che la cartella di destinazione ESISTA!!");
	}

}
